package com.example.arthasdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ArthasDemoApplication {

    public static void main(String[] args) throws InterruptedException {

        SpringApplication.run(ArthasDemoApplication.class, args);
        //----------------------CPU占用高示例-------------------------------------------

    //    Thread thread1 = new Thread(() -> {
    //        while (true) {
    //            String str1 = UUID.randomUUID().toString().replaceAll("-", "");
    //            //System.out.println(Thread.currentThread().getName() + " >>> " +  str1);
    //        }
    //    }, "cpu demo thread1");
    //    thread1.start();
    //
    //    Thread thread2 = new Thread(() -> {
    //        while (true) {
    //            String str2 = UUID.randomUUID().toString().replaceAll("-", "");
    //            System.out.println(Thread.currentThread().getName() + " >>> " +  str2);
    //            try {
    //                TimeUnit.MILLISECONDS.sleep(10);//10毫秒
    //            } catch (InterruptedException e) {
    //                e.printStackTrace();
    //            }
    //        }
    //    }, "cpu with sleep thread2");
    //    thread2.start();
    //}
    //------------------------线程死锁示例----------------------------------------------
    //     Object obj1 = new Object();
    //     Object obj2 = new Object();
    //
    //    new Thread(() -> {
    //            synchronized (obj1){
    //                try {
    //                    TimeUnit.SECONDS.sleep(10);
    //                } catch (InterruptedException e) {
    //                }
    //                synchronized (obj2){
    //                    System.out.println("threadthw1执行到此");
    //                }
    //            }
    //        },"threadthw1").start();
    //
    //    try {
    //            TimeUnit.SECONDS.sleep(2);
    //        } catch (InterruptedException e) {
    //            e.printStackTrace();
    //        }
    //
    //    new Thread(() -> {
    //            synchronized (obj2) {
    //                synchronized (obj1){
    //                    System.out.println("threadthw2执行到此");
    //                }
    //            }
    //        },"threadthw2").start();
    //---------------------------------------------------------------------------------

    }
}
